package com.bt.lms.dao.servise;

import com.bt.lms.entity.Role;
import com.bt.lms.entity.page.Page;

import java.util.List;

/**
 * 角色dao
 *
 * @author 徐大永
 */
public interface RoleDao {

    /**
     * 分页查询角色
     *
     * @param sql       查询角色信息的sql
     * @param page 分页模型
     * @param roleSum   查询总数的sql
     * @return 带有数据的分页模型
     */
    Page<Role> select(String sql, Page<Role> page, String roleSum);

    /**
     * 分页查询角色(关联角色用)
     * @param sql 查询角色信息的sql
     * @param page 分页模型
     * @param roleSum 查询总数的sql
     * @return 带有数据的分页模型
     */
    Page<Role> selectCor(String sql, Page<Role> page, String roleSum);

    /**
     * 插入
     * 角色
     *
     * @param roleSql 要执行的sql语句
     * @param role    要插入的角色
     * @return 影响行数
     */
    int insert(String roleSql, Role role);

    /**
     * 插入（用户角色关系）
     * @param sql 要执行的sql
     * @param roleIds 角色id集
     * @param userId 用户id
     * @return 影响行数
     */
    int inserts(String sql, List<Long> roleIds, Long userId);

    /**
     * 编辑
     * 角色
     *
     * @param role 要执行的sql
     * @return 影响行数
     */
    int update(String sql, Role role);

    /**
     * 编辑 （删除角色及关系）
     *
     * @param sql 要执行的sql
     * @param id  角色id
     * @return 影响行数
     */
    int update(String sql, Long id);

    /**
     * 修改（取消用户角色关联）
     *
     * @param sql    要执行的sql
     * @param userId 用户id
     * @param roleId 角色id
     * @return 影响行数
     */
    int update(String sql, Long userId, Long roleId);

    /**
     * 查询（用户角色）
     * @param sql 要执行的sql
     * @param userId 用户id
     * @return 角色id集
     */
    List<Long> select(String sql, Long userId);

}
